iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
IT管理

用UNRAID打造AIO全生態系列 第 9

自建智慧機櫃 - 燈光篇

  • 分享至 

  • xImage
  •  

建置網路拓樸還會有個問題:管理問題
因為拓樸包含的機器與網線如果沒有適當的整理,恐怕往後運維起來會很困難
所以我建置了簡易機櫃來放主機及網路設備
雖然非企業機房等級
但以個人來說,已經非常實用了

現在就來看看怎麼做吧!

感應燈光實作

我想我們要對網線做整理時,沒有光源應該非常難受吧?
但機櫃內空間狹窄,再放個手電筒照明真的有那麼一點不方便!



https://ithelp.ithome.com.tw/upload/images/20220923/201173995Gwwrg5lcV.png
(圖片來源:網路)

這就是這次要裝進UNRAID網路拓樸的機櫃
為了解決燈光問題,我會加裝自動感應LED燈在此機櫃的兩側門旁
實現智慧/自動化的組件
https://ithelp.ithome.com.tw/upload/images/20220923/20117399lk14IobtOu.png

  • 材料

WS2812B或 3PIN LED排燈*2 (長度各1m)
https://ithelp.ithome.com.tw/upload/images/20220923/2011739977WVr4wJbB.jpg
(圖片來源:網路)

PIR Motion Sensor*1 (型號HW416B)
https://ithelp.ithome.com.tw/upload/images/20220923/20117399fCMUnu8gze.jpg

  • 方法

WS2812B分別把黏在機櫃兩側門邊
HW416B接上樹梅派即可

這邊只需注意HW416B有兩個旋鈕以及焊點
功能分別為:
1.反應速率(停止偵測時會有多少秒的延遲)
範圍 5~300秒

2.可偵測距離
範圍 3~7公尺

3.焊點:預設為高電位觸發(也就是把H點做焊接)
即輸出1時讓WS2812B恆亮
https://ithelp.ithome.com.tw/upload/images/20220923/20117399et3BEBthHx.jpg

  • 平台

樹梅派4B - 4GB (Raspberry Pi OS x86)

目標要達到只要一開門偵測到有動靜,就立即把WS2812B恆亮;反之則關閉

下面是我寫的程式碼,附上給大家依自身情況做修改:

import time
import RPi.GPIO as GPIO
# import 現成燈條套件
from rpi_ws281x import Color, PixelStrip, ws
#import PIR Motion
from gpiozero import MotionSensor

GPIO.setwarnings(True)

#定義PIR Motion
GPIO.setmode(GPIO.BCM)
Motion in pin
Motion_PIN = MotionSensor(16)
GPIO.setup(Motion_PIN, GPIO.IN)

#定義燈條相關參數
LED_COUNT = 30        
LED_PIN = 18         
LED_FREQ_HZ = 800000  
LED_DMA = 10         
LED_BRIGHTNESS = 255
LED_INVERT = False  
LED_CHANNEL = 0
LED_STRIP = ws.SK6812W_RGBW

#定義變化響應時間 (這裡設置50ms)
def colorWipe(strip, color, wait_ms=50):
    for i in range(strip.numPixels()):
        strip.setPixelColor(i, color)
        strip.show()
        time.sleep(wait_ms / 1000.0)

if __name__ == '__main__':
# 燈條函數
    strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL, LED_STRIP)
    strip.begin()
    #輸出主程式
    try:
        while True:
            time.sleep(0.1)
            if Motion_PIN.when_motion:
                colorWipe(strip, Color(0, 0, 0), 0) 
                print("CLOSE")
                time.sleep(0.1)
            elif Motion_PIN.when_no_motion:
                colorWipe(strip, Color(255, 255, 255), 0)
                print("OPEN")
                time.sleep(0.1)
    except:
        print("error")
    #中止程式時清除GPIO
    finally:
        GPIO.cleanup()

上一篇
網口綁定 - Network Bonding
下一篇
自建智慧機櫃 - 散熱自動化
系列文
用UNRAID打造AIO全生態31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言